<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" type="text/css" href="jasmine-3.1.0/jasmine.css">
    <script src="jasmine-3.1.0/jasmine.js"></script>
    <script src="jasmine-3.1.0/jasmine-html.js"></script>
    <script src="jasmine-3.1.0/boot.js"></script>
    <script type="text/javascript" src="jquery-3.3.1.js"></script>
</head>
<body>
    <!--<a href="#" onclick="get1()">发生get1请求</a>-->

    <!--非xhr类型的请求就不会有跨越访问安全限制-->
   <!-- <img src="http://127.0.0.1:8080/test/get1"/>-->
    <script>
         function get1(){
             $.getJSON("http://127.0.0.1:8080/test/get1").then(
                 function (result) {
                     console.log(result);
                 }
             )
         }

         // 每一个测试用例的超时时间
         jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;

         // 请求的接口的前缀
         var base = "http://127.0.0.1:8080/test";

         // 2.使用ngnix解决跨域
         // var base = "http://b.com/test";

         describe("testAjaxCrossDomainRequest", function () {
            // 一般测试方法
             it("get1请求", function (done) {
                 // 服务器返回的结果
                 var result;
                 $.getJSON(base + "/get1").then(function(jsonObj) {
                     result = jsonObj;
                 });

                 setTimeout(function () {
                     expect(result).toEqual({
                         "date": "i'm date"
                     });

                     // 校验完成，通知jasmine框架
                     done();
                 }, 100)
             });

             // 非简单请求跨域测试方法
             it("getJson请求", function (done) {
                 // 服务器返回的结果
                 var result;
                 $.ajax({
                     url: base + "/getJson",
                     type: "post",
                     dataType:"json",
                     // application/json这种是非简单请求，
                     // 浏览器会先发出一条预检命令options方法，检查通过后才发出我们真正的POST方法
                     contentType: "application/json;charset=utf-8",
                     data: JSON.stringify({"name":"liu","age":18}),
                     success:function (data) {
                        result = data;
                     }
                 })

                 setTimeout(function () {
                     expect(result).toEqual({
                         "name":"liu","age":20
                     });

                     // 校验完成，通知jasmine框架
                     done();
                 }, 100)
             });

             // 带cookie的跨域请求
             it("getCookie请求", function (done) {
                 // 服务器返回的结果
                 var result;
                 $.ajax({
                     url: base + "/getCookie",
                     type: "post",
                     dataType:"json",
                     xhrFields:{
                       withCredentials: true // 该参数表示ajax请求的时候会带上cookie, 发送的cookie是被调用方的
                     },
                     success:function (data) {
                         console.log(data);
                         result = data;
                     }
                 })

                 setTimeout(function () {
                     expect(result).toEqual({
                         "date" : "liuwj3"
                     });

                     // 校验完成，通知jasmine框架
                     done();
                 }, 100)
             });


             // 自定义请求头的跨域请求
             it("getHeader请求", function (done) {
                 // 服务器返回的结果
                 var result;
                 $.ajax({
                     url: base + "/getHeader",
                     type: "get",
                     dataType:"json",
                     // 添加自定义请求头：第一种
                     headers:{
                        "x-header1": "aaa"
                     },
                     // 添加自定义请求头：第二种
                     beforeSend: function (xhr) {
                         xhr.setRequestHeader("x-header2", "bbb");
                     },
                     success:function (data) {
                         result = data;
                     }
                 });

                 setTimeout(function () {
                     expect(result).toEqual({
                         "date" : "getHeader aaa bbb"
                     });

                     // 校验完成，通知jasmine框架
                     done();
                 }, 100)
             });

             // 一般跨域请求测试方法（后端通过实现@ControllerAdvice方法拦截，设置回调函数名称）
             /*it("jsonp请求", function(done) {
                 // 服务器返回的结果
                 var result;

                 $.ajax({
                     url: base +"/get1",
                     dataType: "jsonp",
                     jsonp: "callback2",
                     type:"post",
                     cache:true, // 可以使用缓存
                     success: function(json){
                         alert("12354");
                         result = json;
                     }
                 });

                 // 由于是异步请求，需要使用setTimeout来校验
                 setTimeout(function() {
                     expect(result).toEqual({
                         "date" : "i'm date"
                     });

                     // 校验完成，通知jasmine框架
                     done();
                 }, 100);
             });*/

         })
    </script>
</body>
</html>